package com.ruoyi.web.controller.system;

import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.ParkConfig;
import com.ruoyi.common.core.domain.entity.RuleConfig;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.system.service.IParkConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 车场配置管理控制器
 *
 * @author ruoyi
 */
@RestController
@RequestMapping("/system/parkConfig")
public class ParkConfigController extends BaseController {

    @Autowired
    private IParkConfigService parkConfigService;



    /**
     * 获取车场的规则配置
     */
    @GetMapping("/ruleConfigByParkCode")
    public AjaxResult ruleConfigByParkCode(ParkConfig parkConfig) {
        RuleConfig ruleConfig = parkConfigService.selectRuleConfigByParkCode(parkConfig);
        return success(ruleConfig);

    }

    /**
     * 获取车场配置列表
     */
//    @PreAuthorize("@ss.hasPermi('system:park:config:list')")
    @GetMapping("/list")
    public TableDataInfo list(ParkConfig parkConfig) {
        startPage();
        List<ParkConfig> list = parkConfigService.selectParkConfigList(parkConfig);
        return getDataTable(list);
    }

    /**
     * 导出车场配置列表
     */
//    @PreAuthorize("@ss.hasPermi('system:park:config:export')")
    @PostMapping("/export")
    public void export(HttpServletResponse response, ParkConfig parkConfig) {
        List<ParkConfig> list = parkConfigService.selectParkConfigList(parkConfig);
        ExcelUtil<ParkConfig> util = new ExcelUtil<>(ParkConfig.class);
        util.exportExcel(response, list, "车场配置数据");
    }

    /**
     * 获取车场配置详细信息
     */
//    @PreAuthorize("@ss.hasPermi('system:park:config:query')")
    @GetMapping(value = "/{id}")
    public AjaxResult getInfo(@PathVariable("id") Long id) {
        return success(parkConfigService.selectParkConfigById(id));
    }

    /**
     * 新增车场配置
     */
//    @PreAuthorize("@ss.hasPermi('system:park:config:add')")
    @PostMapping("/add")
    public AjaxResult add(@RequestBody ParkConfig parkConfig) {
        return toAjax(parkConfigService.insertParkConfig(parkConfig));
    }

    /**
     * 修改车场配置
     */
//    @PreAuthorize("@ss.hasPermi('system:park:config:edit')")
    @PostMapping("/update")
    public AjaxResult edit(@RequestBody ParkConfig parkConfig) {
        return toAjax(parkConfigService.updateParkConfig(parkConfig));
    }

    /**
     * 删除车场配置
     */
//    @PreAuthorize("@ss.hasPermi('system:park:config:remove')")
//    @DeleteMapping("/{ids}")
//    public AjaxResult remove(@PathVariable Long[] ids) {
//        return toAjax(parkConfigService.deleteParkConfigByIds(ids));
//    }

    @DeleteMapping("/delete/{id}z")
    public AjaxResult remove(@PathVariable Long id) {
        return toAjax(parkConfigService.deleteParkConfigById(id));
    }

    /**
     * 分页查询（支持字段模糊查询）
     * 示例：根据规则名称模糊查询
     */
    @GetMapping("/page")
    public TableDataInfo page(ParkConfig parkConfig) {
        startPage();
        List<ParkConfig> list = parkConfigService.selectParkConfigList(parkConfig);

        return getDataTable(list);
    }
}
